package cz.pecinovsky.česky.oopnz._125_;
//Příliš žluťoučký kůň úpěl ďábelské ódy

import cz.pecinovsky.česky.oopnz._000_.Run;

import cz.pecinovsky.česky.oopnz.správce.Elipsa;
import cz.pecinovsky.česky.oopnz.správce.Obdélník;
import cz.pecinovsky.česky.oopnz.správce.Přesouvač;
import cz.pecinovsky.česky.oopnz.správce.SprávcePlátna;
import cz.pecinovsky.česky.oopnz.správce.Trojúhelník;


////////////////////////////////////////////////////////////////////////////////
//%%+  +++++ Konec ignorovaného počátečního textu +++++
//%I+ <0 //=133b //Test zůstává ve 133b spolu s testovanými třídami
//
//import správce.*;
//%I-
//%I+ >=133x
//
//import cz.pecinovsky.česky.oopnz.správceplátna.Elipsa;
//import cz.pecinovsky.česky.oopnz.správceplátna.Obdélník;
//import cz.pecinovsky.česky.oopnz.správceplátna.Přesouvač;
//import cz.pecinovsky.česky.oopnz.správceplátna.SprávcePlátna;
//import cz.pecinovsky.česky.oopnz.správceplátna.Trojúhelník;
//%I-
//%A+ >=133x

import cz.pecinovsky.česky.oopnz.utility.IO;
//%A-
//%X+ xxxxx Začátek přeskakovaného textu xxxxx
/*******************************************************************************
 *<pre>
 * Předchozí: _109_Test v projektu 009z_01_Tvary
 *
 * Přidáno:
 *    - testPlynuléPosuny
 *
 * Upraveno:
 *      *
 *</pre>
 */
public class Test_126_
{      private Test_126_() {}       static
//%X- ----- Konec přeskakovaného textu -----


/*******************************************************************************
 * Testovací třída Test slouží nácviku práce s testovacími třídami.
 *
 * Oproti minulé verzi v projektu 009z_01_Tvary:
 *    - Přibyl testPlynuléPosuny
 *
 * @author Rudolf PECINOVSKÝ
 * @version 6.03.2017 — 2010-11-08
 */
public class Test extends junit.framework.TestCase
{
    private Obdélník    obdélník0;
    private Elipsa      elipsa0;
    private Trojúhelník trojúhel0;
    private Obdélník    obdélník1;
    private Elipsa      elipsa1;
    private Trojúhelník trojúhel1;



//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================
//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ NESOUKROMÉ METODY TŘÍDY ===========================================

//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /***************************************************************************
     * Vytvoří test se zadaným názvem.
     *
     * @param název  Název konstruovaného testu
     */
    public Test( String název )
    {
        super(název);
    }



//== PŘÍPRAVA A ÚKLID PŘÍPRAVKU ================================================

    /***************************************************************************
     * Inicializace předcházející spuštění každého testu a připravující tzv.
     * přípravek (fixture), což je sada objektů, s nimiž budou testy pracovat.
     */
    @Override
    protected void setUp()
    {
        obdélník0 = new Obdélník();
        elipsa0   = new Elipsa();
        trojúhel0 = new Trojúhelník();
        obdélník1 = new Obdélník   (50, 50, 200, 100);
        elipsa1   = new Elipsa     (50, 50, 200, 100);
        trojúhel1 = new Trojúhelník(50, 50, 200, 100);
        obdélník0.nakresli();
        elipsa0  .nakresli();
        trojúhel0.nakresli();
        obdélník1.nakresli();
        elipsa1  .nakresli();
        trojúhel1.nakresli();
        IO.zpráva("Přípravek vytvořen");
    }


    /***************************************************************************
     * Úklid po testu - tato metoda se spustí po vykonání každého testu.
     */
    @Override
    protected void tearDown()
    {
    }



//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== VNOŘENÉ A VNITŘNÍ TŘÍDY ===================================================
//== VLASTNÍ TESTY =============================================================
//
//     /***************************************************************************
//      *
//      */
//     public void testXXX()
//     {
//     }
    public void testOdřádkování()
    {
        System.out.print("Před odřádkováním");
        System.err.print("Před odřádkováním");
        IO.zpráva("Před odřádkováním");

        System.out.println(" - druhá polovina");
        System.err.println(" - druhá polovina");
        IO.zpráva("Po odřádkování");
    }

    public void testPosuny()
    {
        trojúhel1.posunDolů();
        elipsa1  .posunVpravo();
        obdélník1.nakresli();
    }

    public void testPosuny2()
    {
        elipsa1  .posunDolů();
        trojúhel1.posunVpravo();
        obdélník1.nakresli();
    }


    public void testPlynuléPosuny()
    {
        Přesouvač přesouvač = new Přesouvač(3);
        přesouvač.přesunO ( 0, 50, trojúhel0);
        přesouvač.přesunNa(50,  0, elipsa0);
        obdélník0.nakresli();
    }


    public void testStandardníVýstup()
    {
        System.out.print  ("Bez odřádkování - ");
        System.out.println("s odřádkováním");

        System.out.print  ("Obdélník0: ");
        System.out.println(obdélník0);

        System.out.print  ("Elipsa0:   " + elipsa0);
        System.out.println();
        System.out.println("Trojúhel0: " + trojúhel0);

        System.out.println("\nObdélník1: " + obdélník1 +
                           "\nElipsa1:   " + elipsa1 +
                           "\nTrojúhel1: " + trojúhel1);

        System.err.println("Tohle píšu do chybového výstupu");
        System.out.println("\nA tohle už ne");
    }
}

//%%-  ----- Začátek ignorovaného závěrečného textu -----
//%== //Takto se označí řádek, jenž bude odkomentován (vhodné např. pro importy)
//Je-li na 6 pozici mezera, odmaže se také

//== TESTY A METODA MAIN =======================================================

    /***************************************************************************
     * Třída, jejíž instance má na starosti úklid mezi jednotlivými testy,
     * který není možno zakomponovat do metody {@code tearDown()},
     * dokud nebudou studenti umět programovat.
     */
    private static class TearDown implements Run.ITD
    {
        /** {@inheritDoc} */
        @Override
        public void ukliď()
        {
            SprávcePlátna.getInstance().odstraňVše();
        }
    }


    /***************************************************************************
     * Testovací metoda.
     */
    public static void test()
    {
        Run.tests(Test.class,
                new TearDown(),
//                "testPosuny",
//                "testPlynuléPosuny",
                "testStandardníVýstup",
                "testOdřádkování",
                "");
        System.exit(0);
    }
    /** @param args Parametry příkazového řádku - nepoužívané. */
    public static void main( String[] args )  {  test();  }
}
